package com.example.entity;

import java.time.LocalDateTime;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;

@Data
@TableName("exams")
public class Exam {
    
    @TableId(type = IdType.AUTO)
    private Long id;
    
    private String title;                    // 考试标题
    private String description;              // 考试描述
    private LocalDateTime startTime;         // 开始时间
    private LocalDateTime endTime;           // 结束时间
    private Integer duration;                // 时长（分钟）
    private Integer totalScore;              // 总分
    private Integer passScore;               // 通过分数
    
    private String status;                   // 考试状态：DRAFT-草稿，PUBLISHED-已发布，IN_PROGRESS-进行中，ENDED-已结束
    private String questionSelectionMode;    // 组题方式：MANUAL-手动选题，RANDOM-随机组题
    private String randomQuestionRules;      // 随机组题规则（JSON格式）
    
    private Boolean randomQuestions;         // 是否随机题目顺序
    private Boolean preventCheating;         // 是否启用防作弊功能
    private Boolean showResults;             // 是否显示结果
    private Boolean published;               // 是否已发布
    
    private LocalDateTime publishTime;       // 发布时间
    private Integer draftSaveCount;          // 草稿保存次数
    private LocalDateTime lastDraftSaveTime; // 最后草稿保存时间
    
    private Long creatorId;                  // 创建者ID
    private LocalDateTime createTime;        // 创建时间
    private LocalDateTime updateTime;        // 更新时间

    @TableField(exist = false)
    private List<Class> classes;            // 关联的班级列表

    @TableField(exist = false)
    private List<Question> questions;       // 关联的题目列表
} 